package com.ruofeng.app.kotlin.common.dsl.`fun`

import java.util.*

/**
 * Created by 邱鹏 on 2017/8/26.
 */
data class User(var id: String = "",
                var username: String = "default",
                var password: String = "000000")

//这个方法需要一个 User.() -> Unit 类型的参数，这个类似你可能不明白是什么，其实，它指得是一个函数类型，即 User 的一个方法，这个方法会返回 Unit
fun buildUser(buildAction: User.() -> Unit) = User().apply(buildAction)
//首先创建一个 User() 对象，然后执行传入的 buildAction 方法，然后返回这个 User() 对象。
fun modifyUser(user: User, modifyAction: User.() -> Unit) = user.apply(modifyAction)

fun main(args: Array<String>) {
    var user = buildUser {
        id = UUID.randomUUID().toString()
        username = "Juhezi"
        password = "123456"
    }
    println(user)
    user = modifyUser(user) {
        id = "0"
        username = "Kotlin"
        password = "654321"
    }
    println(user)
}